第一次看到這系列文章的你,如果你已經寫過幾個 Laravel 專案,大概都經歷過同一個階段。功能做得差不多了,客戶或主管突然問一句,那後台管理介面呢,能不能讓我們自己上架商品、改改訂單狀態、看看每天的銷售數字。這句話聽起來輕描淡寫,實際上往往是整個專案裡最花時間、卻又最不容易被看見成就感的一塊工作。
多數人第一次面對這個需求,選擇自己動手刻一套後台,Blade 頁面一個一個疊,表單驗證一條一條寫,權限判斷散落在各個 Controller 裡。做到第三、第四個模組,會開始注意到自己在重複寫幾乎一樣的 CRUD 邏輯,只是欄位名稱不同。這時候你可能聽過 Filament 這個名字,看過幾張漂亮的後台截圖,但親手用過的人不多,網路上找得到的中文教學也大多停在「安裝完,做一個 Resource,結束」,沒有真正走到權限、多租戶、儀表板這些正式上線前必須處理的部分。
這個系列要補上的,正是這段空白。
這個系列不會示範怎麼寫出一個功能展示用的 Demo 後台,做完就丟著積灰塵。目標是帶你從安裝 Filament 的第一天開始,一路做出一套具備多角色權限、多租戶資料隔離、自訂儀表板,並且通過測試、準備好上線的正式後台管理系統。
做法是全系列共用同一個示範專案,一間寵物用品批發商的後台管理系統,涵蓋商品、訂單、客戶、庫存、報表五個模組。每天做的事情,都疊加在前一天已經完成的基礎之上,而不是每天各自獨立、做完就結束的功能展示。你會眼睜睜看著這套後台從第一天只有一個陽春的 Resource,一天一天長成一個真正能交給客戶使用的系統。
系列會刻意保留一個模組,報表模組,一直到系列尾聲才開始動手。這是有意的安排,用意是在 30 天累積了一套建置流程之後,現場驗證這套流程能不能真的套用到一個全新的模組上,而不是每個模組都要重新摸索一次,這也是檢驗這 30 天有沒有真的教會你東西的方式。
這個系列假設讀者已經具備實際的 Laravel 開發經驗,熟悉 Eloquent、Migration、Route、Middleware 這些核心概念,系列不會重新解釋 Laravel 本身怎麼運作,會把篇幅完全留給 Filament。你可能還沒用過 Filament,或者只在別人的專案裡看過畫面,這正是系列鎖定的起點。手上如果剛好有一個現有專案,正在猶豫要不要導入 Filament 取代自己手刻的後台,這個系列會特別有感,因為每個階段都會回頭呼應這類真實的導入決策。
如果你對 Laravel 本身還不熟,這個系列不會是最適合你的起點,建議先把 Eloquent 與路由這些基礎打穩,再回來會順暢很多。
在攤開 30 天地圖之前,先把第一天才會展開的問題稍微說在前面,方便你判斷這個系列值不值得投入 30 天。
手刻後台的問題不在於做不出來,而在於每加一個模組,就要重新走一次表單、驗證、列表、權限這整套流程,工時隨模組數量不斷增加,維護成本也是。市面上其他後台套件不是沒有,但要嘛客製化彈性有限,要嘛與 Laravel 生態的整合不夠深。
Filament 選擇的做法,是深度綁定 Laravel 既有的 Eloquent 與 Policy 機制,用宣告式的方式定義表單與表格欄位,讓一個 Resource 從骨架到完整功能的距離大幅縮短,同時保留足夠的擴充點供客製化。這句話背後具體的取捨細節,留給 Day 1 正式展開,這裡只需要記住一個方向,選擇 Filament,賭的是「開發速度」與「客製化彈性」能不能兼得,而這 30 天要驗證的,正是這個賭注成不成立。
以下依八個階段分組呈現整個系列的全貌。每個階段標題下方先說明這個階段要讓你建立起什麼樣的能力,再列出該階段每一天的標題與一句話定位。閱讀當下不需要理解每一天的技術細節,只需要對整體節奏有個印象,等你實際走到某一天,回來這裡對照一下自己的位置即可。
三天,目標是讓你講得出什麼情況下該選 Filament、什麼情況下不該,並且完成安裝、建立第一個 Panel,做出第一個具備基本 CRUD 功能的 Resource。
五天,是系列中份量最重的技術操作階段之一,目標是讓你熟練建置一個貼近真實業務需求的表單與表格,包含各類欄位型別、篩選、排序、批次操作,以及掛載操作按鈕。
四天,目標是讓你在 Filament 介面上正確呈現與操作一對多、多對多關聯,讓商品、訂單、客戶、庫存這幾個模組真正串成一個系統,而不是各自獨立的孤島。
三天,目標是讓你補齊表單驗證的細節規則,理解資料儲存前後可以掛載自訂邏輯的位置,並讓 Filament 讀取 Laravel 既有的 Policy 判斷操作權限。
三天,目標是讓你設計出貼近真實團隊結構的角色權限,區分倉管、業務、財務等不同角色能看到與操作的範圍,並讓後台依組織範圍隔離資料。
三天,目標是讓你打造一個由統計數字、圖表、自訂內容組成的儀表板首頁,把系列前面累積的資料轉化成管理者一眼就能看懂的畫面。
四天,目標是讓你處理表格資料量變大之後的效能問題,補齊 Panel 的自動化測試,並完成上線前必要的設定調整。
五天,是系列的收尾階段,目標是讓你看到前面七個階段的成果被整合進同一個示範專案的完整樣貌,並透過補上報表模組這個尚未處理過的模組,驗證這套系統化建置流程是否真的能套用到新模組上,最後為系列畫下句點。
30 天的天數配置刻意不均分,這是一套有意識設計的建置順序。表單與表格這個階段確實需要比其他階段更多篇幅,因為那是日常使用 Filament 時最頻繁碰到的部分。報表模組刻意保留到系列尾聲才動手,不是湊天數,而是要在 30 天累積出一套建置流程之後,現場驗證這套流程真的可以複製到新模組,而不只是紙上談兵。你在後面某一天如果覺得進度卡住,回來對照這份地圖,通常能立刻看出自己是在哪個階段的哪個環節卡關,不必漫無目的地往前翻。
這份地圖上的每一格,都是為了兌現一個承諾,把「導入一套後台管理系統」這件事,從一場每個模組都要重新摸索的重複勞動,變成一套有架構可依循的系統性建置流程。這件事光看地圖還無法被說服,需要跟著往下走,一步一步驗證每個階段是不是真的兌現了承諾。
明天我們將正式進入 Day 01,把「為什麼是 Filament」這個問題,攤開來看清楚。